home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 24 / CU Amiga Magazine's Super CD-ROM 24 (1998)(EMAP Images)(GB)(Track 1 of 2)[!][issue 1998-07].iso / CUCD / Programming / SWI / source / man / pl.pl < prev    next >
Encoding:
Text File  |  1998-03-24  |  7.0 KB  |  232 lines

  1. /*  $Id: pl.pl,v 1.2 1998/03/24 13:38:42 jan Exp $
  2.  
  3.     Designed and implemented by Jan Wielemaker
  4.     E-mail: jan@swi.psy.uva.nl
  5.  
  6.     Copyright (C) 1996 University of Amsterdam. All rights reserved.
  7. */
  8.  
  9. :- module(latex2html4pl, []).
  10. :- use_module(library(latex2html)).
  11.  
  12. :- latex2html_module.
  13. :- tex_load_commands(pl).
  14.  
  15.          /*******************************
  16.          *           MACROS        *
  17.          *******************************/
  18.  
  19. #(defitem(Label),    [html('<P>'), html('<DT>'), Label, html('<DD>')]).
  20.  
  21.          /*******************************
  22.          *         COMMANDS        *
  23.          *******************************/
  24.  
  25. cmd(bug({TeX}), HTML) :-
  26.     translate_footnote(['BUG:', ' '|TeX], HTML).
  27. cmd(fileext({Ext}), #code(Text)) :-
  28.     sformat(Text, '.~w', [Ext]).
  29.  
  30. cmd(var(        {A1}), #var(+A1)).
  31. cmd(arg(        {A1}), #var(+A1)).
  32. cmd(file(        {A1}), #code(+A1)).
  33. cmd(clib(        {A1}), #code(+A1)).
  34. cmd(cglobalvar(        {A1}), #code(+A1)).
  35. cmd(ctype(        {A1}), #code(+A1)).
  36. cmd(pllib(        {A1}), #code([library, #embrace(+A1)])).
  37. cmd(hook(        {_A1}), #i(#embrace(hook))).
  38. cmd(env(        {A1}), #code(+A1)).
  39. cmd(program(        {A1}), #b(A1)).
  40. cmd(exam(        {A1}), #code(+A1)).
  41. cmd(jargon(        {A1}), #em(+A1)).
  42. cmd(chr(        {A1}), #code(+A1)).
  43. cmd(const(        {A1}), #code(+A1)).
  44. cmd(op(            {A1}), #strong(+A1)).
  45. cmd(cmdlineoption(    {A1}), #strong(+A1)).
  46. cmd(fmtseq(        {A1}), #code(A1)).
  47.  
  48. cmd(versionshort,         _, nospace(Version)) :-
  49.     feature(version, V),
  50.     Major is V // 10000,
  51.     Minor is (V // 100) mod 100,
  52.     Patch is V mod 100,
  53.     concat_atom([Major, Minor, Patch], '.', Version).
  54. cmd(bnfor, '|').
  55. cmd(bnfmeta({Meta}), [nospace('<'), #var(+Meta), nospace('>')]).
  56. cmd(argoption({RawName}, {ArgName}),
  57.     [ #strong(Name), ' ', #var(ArgName)
  58.     ]) :-
  59.     clean_tt(RawName, Name).
  60. cmd(predref({RawName}, {Arity}), #lref(Text, Text)) :-
  61.     clean_name(RawName, Name),
  62.     sformat(Text, '~w/~w', [Name, Arity]).
  63. cmd(functor({RawName}, {Arity}), Text) :-
  64.     clean_name(RawName, Name),
  65.     sformat(Text, '~w/~w', [Name, Arity]).
  66. cmd(compound({Name}, {Args}), #code([+Name, #embrace(+Args)])).
  67. cmd(term({Name}, {Args}), #code([+Name, #embrace(+Args)])).
  68. cmd(errorterm({Name}, {Args}), #code([+Name, #embrace(+Args)])).
  69. cmd(manref({RawName}, {Section}),
  70.     [#strong(Name), #embrace(Section)]) :-
  71.     clean_tt(RawName, Name).
  72. cmd(funcref({RawName}, {Args}),
  73.     #lref(RefName, [Name, #embrace(+Args)])) :-
  74.     clean_tt(RawName, Name),
  75.     sformat(RefName, '~w()', [Name]).
  76. cmd(definition({Tag}),
  77.     #defitem(+Tag)).
  78. cmd(predicate({RawName}, {'0'}, {_}),
  79.     #defitem(#label(RefName, #strong(Name)))) :-
  80.     clean_name(RawName, Name),
  81.     sformat(RefName, '~w/0', [Name]),
  82.     add_to_index(RefName, +RefName).
  83. cmd(predicate({RawName}, {Arity}, {Args}),
  84.     #defitem(#label(RefName,
  85.             [ #strong(Name), #embrace(#var(+Args))
  86.             ]))) :-
  87.     clean_name(RawName, Name),
  88.     sformat(RefName, '~w/~w', [Name, Arity]),
  89.     add_to_index(RefName, +RefName).
  90. cmd(directive({RawName}, {Arity}, {Args}),
  91.     #defitem(#label(RefName,
  92.             [ #strong(Name), #embrace(#var(Args))
  93.             ]))) :-
  94.     clean_name(RawName, Name),
  95.     sformat(RefName, '~w/~w', [Name, Arity]),
  96.     add_to_index(RefName, +RefName).
  97. cmd(cfunction({RType}, {Name}, {Args}),
  98.     #defitem(#label(RefName,
  99.             [ #var(RType), ' ', #strong(Name), #embrace(#var(+Args))
  100.             ]))) :-
  101.     sformat(RefName, '~w()', [Name]),
  102.     add_to_index(RefName, +RefName).
  103. cmd(cmacro({RType}, {Name}, {Args}),
  104.     #defitem(#label(RefName,
  105.             [ #var(RType), ' ', #strong(Name), #embrace(#var(+Args))
  106.             ]))) :-
  107.     sformat(RefName, '~w()', [Name]),
  108.     add_to_index(RefName, +RefName).
  109. cmd(prefixop({RawName}, {Arg}),
  110.     #defitem(#label(RefName, [#strong(Name), ' ', #var(Arg)]))) :-
  111.     clean_name(RawName, Name),
  112.     sformat(RefName, '~w/1', [Name]),
  113.     add_to_index(RefName, +RefName).
  114. cmd(infixop({RawName}, {Arg1}, {Arg2}),
  115.     #defitem(#label(RefName,
  116.             [ #var(Arg1), ' ', #strong(Name), ' ', #var(Arg2)
  117.             ]))) :-
  118.     clean_name(RawName, Name),
  119.     sformat(RefName, '~w/2', [Name]),
  120.     add_to_index(RefName, +RefName).
  121. cmd(termitem({Name}, {[]}), #defitem(#strong(+Name))).
  122. cmd(termitem({Name}, {Arg}),
  123.     #defitem([#strong(+Name), #embrace(#var(+Arg))])).
  124. cmd(fmtchar({Name}), #defitem(#code(+Name))).
  125. cmd(optionval({Value}), #defitem(#strong(+Value))).
  126. cmd(cmdlineoptionitem(M, {Option}, {Arg}),
  127.     #defitem([#strong(+Option), Sep, #var(+Arg)])) :-
  128.     (   M = *
  129.     ->  Sep = []
  130.     ;   Sep = [' ']
  131.     ).
  132. cmd(optionarg({Option}, {Arg}),
  133.     #defitem([#strong(Option), #var(Arg)])).
  134. cmd(traceoption({Char}, {Name}, {Description}),
  135.     [ #defitem([#strong(Name), ' ', #embrace(#code(Char))]),
  136.       +Description
  137.     ]).
  138. cmd(pleaseoption({Name}, {Type}, {Default}),
  139.     #defitem([ #strong(Name), ' ', #embrace(#var(Type)), ' ',
  140.            'Default:', ' ', Default
  141.          ])).
  142. cmd(featureoption({Name}, {Type}),
  143.     #defitem([#strong(Name), ' ', #embrace(#var(Type))])).
  144. cmd(escapeitem({Name}), #defitem(#code([nospace('\'), +Name]))).
  145. cmd(ttdef({Def}), #defitem(#code(+Def))).
  146. cmd(predicatesummary({RawName}, {Arity}, {Summary}),
  147.     #row([#predref(Name, Arity), +Summary])) :-
  148.     clean_name(RawName, Name).
  149. cmd(oppredsummary({RawName}, {Arity}, {_Assoc}, {_Pri}, {Summary}),
  150.     #row([#predref(Name, Arity), +Summary])) :-
  151.     clean_name(RawName, Name).
  152. cmd(functionsummary({RawName}, {Arity}, {Summary}),
  153.     #row([#predref(Name, Arity), +Summary])) :-
  154.     clean_name(RawName, Name).
  155. cmd(opfuncsummary({RawName}, {Arity}, {_Assoc}, {_Pri}, {Summary}),
  156.     #row([#predref(Name, Arity), +Summary])) :-
  157.     clean_name(RawName, Name).
  158. cmd(opsummary({Pri}, {Assoc}, {RawName}, {Summary}),
  159.     #row([Pri, Assoc, Name, +Summary])) :-
  160.     clean_name(RawName, Name).
  161.  
  162. cmd(texcmd({Name}), #code([nospace(\), Name])).
  163. cmd(texenv({Name}), #code(Name)).
  164. cmd(texmode({Name}), #var(Name)).
  165.  
  166.          /*******************************
  167.          *               C        *
  168.          *******************************/
  169.  
  170. cmd(Cmd, HTML) :-
  171.     special(Cmd, Atom),
  172.     HTML = #code(Atom).
  173.  
  174. special('Sexe', '#!').
  175. special('Scut', '!').
  176. special('Scomma', ',').
  177. special('Sifthen', '->').
  178. special('Ssoftcut', '*->').
  179. special('Sdot', '.').
  180. special('Ssemicolon', ';').
  181. special('Slt', '<').
  182. special('Seq', '=').
  183. special('Suniv', '=..').
  184. special('Saeq', '=:=').
  185. special('Sle', '=<').
  186. special('Sequal', '==').
  187. special('Sstructeq', '=@=').
  188. special('Sstructneq', '\=@=').
  189. special('Sane', '=\=').
  190. special('Sgt', '>').
  191. special('Sge', '>=').
  192. special('Stlt', '@<').
  193. special('Stle', '@=<').
  194. special('Stgt', '@>').
  195. special('Stge', '@>=').
  196. special('Snot', '\+').
  197. special('Sne', '\=').
  198. special('Snequal', '\==').
  199. special('Shat', '^').
  200. special('Sbar', '|').
  201. special('Stimes', '*').
  202. special('Spow', '**').
  203. special('Splus', '+').
  204. special('Sminus', '-').
  205. special('Sdiv', '/').
  206. special('Sidiv', '//').
  207. special('Sand', '/\').
  208. special('Slshift', '<<').
  209. special('Srshift', '>>').
  210. special('Sneg', '\').
  211. special('Sesc', '\').
  212. special('Sor', '\/').
  213. special('Sdollar', '$').
  214. special('Squest', '?').
  215. special('Smodule', ':').
  216. special('Sneck', ':-').
  217. special('Sdirective', '?-').
  218. special('Sdcg', '-->').
  219. special('Bc', '\c').
  220. special('Bn', '\n').
  221. special('Br', '\r').
  222. special('Bl', '\l').
  223. special('BB', '\\').
  224. special('Stilde', '~').
  225. special('Spercent', '%').
  226. special('Shash', '#').
  227.  
  228. clean_name([\Special], Out) :-
  229.     special(Special, Out), !.
  230. clean_name([Out], Out).
  231.     
  232.